package cn.bkrc.redis;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * 操作redis中的hash类型的数据
 */
@Component
public class RedisHashUtils{
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;

    /**
     * 写入数据到缓存
     * @param h
     * @param hk
     * @param hv
     */
    public boolean put(String h,Object hk,Object hv){
        boolean result=false;
        try{
            redisTemplate.opsForHash().put(h,hk,hv);
            result=true;
        }catch (Exception e){
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 写入数据到缓存，存入map集合
     * @param h
     * @param map
     */
    public boolean putAll(String h, Map<String,Object> map){
        boolean result=false;
        try{
            redisTemplate.opsForHash().putAll(h,map);
            result=true;
        }catch (Exception e){
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 获取缓存中的键值的关系映射
     * @param h
     * @return
     */
    public Map<Object,Object> entries(String h){
        return redisTemplate.opsForHash().entries(h);
    }

    /**
     * 删除集合中的数据
     * @param h
     * @param objects
     */
    public boolean delete(String h,Object... objects){
        boolean result=false;
        try{
            redisTemplate.opsForHash().delete(h,objects);
            result=true;
        }catch (Exception e){
            e.printStackTrace();
        }
        return result;
    }
}